import router from '@/router'
import store from '@/store'
// import { getUserInfo } from '@/store/modules//user'
// import {getUserInfo} from '@/store/'
// 路由进度条
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'
// 白名单
const whiteList = ['/login', '/404']
// 前置首位
router.beforeEach(async(to, from, next) => {
  nprogress.start()
  if (store.getters.token) {
    if (to.path === '/login') {
      next('/')
    } else {
      if (!store.getters.userId) {
        // 接收方法里runten了一个result 这里就是拿到menus的关键
        const { roles } = await store.dispatch('user/getUserInfo')
        // 筛选用户的可用路由
        // filterRoutes里也有一个rentun拿到筛选完的动态路由
        const routes = await store.dispatch('permission/filterRoutes', roles.menus) // 筛选得到当前用户的可用动态路由
        // 添加动态路由到路由表 这是router的方法
        // 404应该放在所有路由的最后
        router.addRoutes([...routes, { path: '*', redirect: '/404', hidden: true }])
        // next(to.path)  和直接next一样  已知bug  需要给他刷一下 再next
      }
      next()
    }
  } else {
    if (whiteList.indexOf(to.path) > -1) {
      next()
    } else {
      next('/login')
    }
  }
  nprogress.done()
})
router.afterEach(() => {
  nprogress.done()
})
